What & Why fish hydroacoustics?

  • Non-invasive monitoring
  • Traditionally: hydroacoustics used to measure fish biological/behavioral features (size, depth, abundance) — not to classify species.
  • Management: distinguish LT vs SMB
  • Question: can the FRC (45–170 kHz) classify species?
  • Outcome: scalable pipeline for species ID & trends

Sonar echo demo

About the dataset

  • ~30k observations × 302 variables; two species (LT, SMB)
  • Processed in Echoview
  • Signals: F45–F170 (Frequency Response Curve)
  • Context: morphometrics, depth, speed, orientation
  • Focus today: frequency data only for classification

Acoustic fingerprints: the Frequency Response Curve (FRC)

  • Different echoes (45–170 kHz) → the FRC
  • Summarised data: using per-frequency summaries (mean ± SE) to reveal clearer species patterns and reduce noise
  • Species show distinct curve shapes
  • Hypothesis: FRC alone can separate LT vs SMB
Figure 1: Mean Frequency Response Curve (FRC) with ±SE ribbon by species

Which frequencies separate species?

  • Every Frequency isn’t equally useful for classification
  • Better Classification by focusing on discriminative frequencies
  • Future tuning: select top discriminative frequencies only

Figure 2

From curves to models

  • Each fish’s FRC (45–170 kHz) summarised
    • Quantiles (q20–q100)
  • feasts features capture curve shape (ACF/PACF/STL) to encode smoothness, periodicity, and slope changes.(treat each fish’s FRC as a short time series)
  • H2O AutoML() across Stack ensemble/GBM / DL / XGBoost
  • Grouped CV by fish, test on held-out set
pipeline raw 1) Raw Sonar F45–F170 per ping agg 2) Per-fish Aggregation Quantiles (q20–q100) raw->agg per fish feats 3) feasts Features ACF / PACF / STL (shape) agg->feats shape descriptors note1 Grouped CV by fishNum (60/20/20) agg->note1 model 4) H2O AutoML GBM / Deep Learning / XGBoost feats->model features → classifier

Baselines: RNN & per-ping AutoML

Pre-processing (used by the RNN):

  • Size-standardise each fish to 450 mm with offset_dB = 10*log10(450/length)

  • Convert F45–F170 from dB → linear backscatter: exp((dB + offset_dB)/10)

  • Grouped splits by fishNum (train / valid / test)

Baselines on TEST set
Model Acc @ 0.50 Acc @ Policy
RNN (reproduction on 5-ping blocks) 0.593
AutoML (per-ping, original data) 0.668 0.663

TS-features: AutoML (per-fish)

Four variants

  • QUANTILES and ALL FREQUENCIES and TIME SERIES FEATURES (5 rows/fish: F* + features)
  • QUANTILES and TIME SERIES FEATURES (5 rows/fish: features only)
  • MEDIAN and ALL FREQUENCIES and TIME SERIES FEATURES (1 row/fish: median F* + features)
  • MEDIAN and TIME SERIES FEATURES (1 row/fish: features only)
TS-features AutoML — TEST results
Variant Acc @ 0.50 Acc @ Policy
QUINTILES_ALLFREQ 0.883 0.867
QUINTILES_FEATS 0.633 0.750
MEDIAN_ALLFREQ 0.917 0.833
MEDIAN_FEATS 0.667 0.750

Future Work: What’s next?

  • OOF (Out-of-Fold) Threshold Tuning – to optimise classification thresholds
  • Model Hyperparameter Tuning – for the Deep Learning grid (layers, dropout, epochs, learning rate, etc.).
  • Use discriminative frequencies
    Select F* bands that best separate LT vs SMB.
    → Train compact models on these top F* only to reduce noise & overfitting.
  • Add richer time-series features from tsfeatures/feasts

Every fish leaves a sonic fingerprint.

Our job is to read it.

Fish Hydroacoustics — ETC5543